import os
import subprocess
import sys
import shutil

def create_exe():
    """
    创建可执行文件的主函数
    """
    # 项目根目录
    project_root = os.path.dirname(os.path.abspath(__file__))
    
    # 输出目录
    dist_dir = os.path.join(project_root, 'dist')
    build_dir = os.path.join(project_root, 'build')
    
    # 清理旧的构建文件
    if os.path.exists(dist_dir):
        shutil.rmtree(dist_dir)
    if os.path.exists(build_dir):
        shutil.rmtree(build_dir)
    
    # 处理图标路径
    icon_path = os.path.join(project_root, 'icon.ico')
    
    # PyInstaller 命令参数（针对 Windows 修改）
    pyinstaller_cmd = [
        'pyinstaller',
        '--onefile',           # 单文件模式
        '--windowed',           # 无控制台窗口
        '--name=PDFConverter',  # 可执行文件名称
        f'--icon={icon_path}',  # 应用图标（使用完整路径）
        '--add-data=src;src',   # Windows 使用分号分隔
        '--hidden-import=pdf2docx',  # 显式包含 pdf2docx
        '--hidden-import=PyQt5',     # 显式包含 PyQt5
        'main.py'               # 主入口文件
    ]
    
    try:
        # 执行打包命令
        subprocess.run(pyinstaller_cmd, check=True)
        print("打包成功！可执行文件位于 dist/PDFConverter.exe")
    
    except subprocess.CalledProcessError as e:
        print(f"打包失败：{e}")
    
    # 可选：清理临时文件
    if os.path.exists(build_dir):
        shutil.rmtree(build_dir)

if __name__ == '__main__':
    create_exe()